/* 
	该文件是对axios的二次封装，封装目的是：
			1.让所有请求都有一个进度条的效果
			2.让所有请求自动返回的就是response.data
*/

import axios from 'axios'
import nprogress from 'nprogress'
import 'nprogress/nprogress.css'

const mockAxios = axios.create({
	baseURL:'http://www.0613.com',
	timeout:5000, //超时时间
})

// 请求拦截器
mockAxios.interceptors.request.use((config)=>{
	nprogress.start() //进度条开始走
	return config
})

// 响应拦截器
mockAxios.interceptors.response.use(
	//响应成功的回调
	response => {
		//进度条停下来
		nprogress.done()
		//把服务器返回真正数据交给使用者，使用者就不用.data了
		return response.data 
	},
	//响应失败的回调
	error => {
		//进度条停下来
		nprogress.done()

		// 第一种做法，将响应的错误继续传递下去，可以触发程序员发请求时的失败回调。
		// return Promise.reject(error)

		/* 
			第二种做法，提示一下错误，然后返回一个pendding状态的Promise实例，
			这样就不会触发程序员发请求时的失败回调了 
		*/
		alert(error)
		return new Promise(()=>{})
		
	}
)

export default mockAxios
